#include"http.hpp"
#define WWWROOT "./wwwroot/"



std::string RequestStr(const HttpRequest& req)
{
    std::stringstream ss;
    ss << req._method << " " << req._path << " " << req._version << "\r\n";
    for(auto& it :req._params)
    {
        ss << it.first << ": " << it.second <<"\r\n";
    }
    for(auto& it :req._headers)
    {
        ss << it.first << ": " << it.second <<"\r\n";
    }
    ss << "\r\n";
    ss << req._body;
    return ss.str();
}


void hello (const HttpRequest& req,HttpResponse* rsp)
{
    rsp->SetContent(RequestStr(req),"text/plain");
}
void login (const HttpRequest& req,HttpResponse* rsp)
{
    rsp->SetContent(RequestStr(req),"text/plain");
}
void PutFile(const HttpRequest& req,HttpResponse* rsp)
{
    std::string pathname = WWWROOT + req._path;
    Util::WriteFile(pathname,req._body);
}
void DeleteFile(const HttpRequest& req,HttpResponse* rsp)
{
    rsp->SetContent(RequestStr(req),"text/plain");
}
int main()
{
    HttpServer server(8888);
    server.SetThreadCount(2);
    server.SetBaseDir(WWWROOT);//设置静态资源根目录,告诉服务器有静态请求到来后，需要到哪里去找资源文件
    server.Get("/hello",std::bind(hello,std::placeholders::_1,std::placeholders::_2));

    server.Post("/login",std::bind(login,std::placeholders::_1,std::placeholders::_2));
    server.Put("/1234.txt",std::bind(PutFile,std::placeholders::_1,std::placeholders::_2));
    server.Delete("/1234.txt",std::bind(DeleteFile,std::placeholders::_1,std::placeholders::_2));
    server.Listen();

    return 0;
}